package cn.tedu.medicalappointmentsystemk.service;

import cn.tedu.medicalappointmentsystemk.consts.data.AccountConsts;
import cn.tedu.medicalappointmentsystemk.consts.web.JwtConsts;
import cn.tedu.medicalappointmentsystemk.pojo.authentication.CurrentPrincipal;
import cn.tedu.medicalappointmentsystemk.pojo.bo.UserBO;
import cn.tedu.medicalappointmentsystemk.pojo.bo.UserSelectByIdBO;
import cn.tedu.medicalappointmentsystemk.pojo.param.*;
import cn.tedu.medicalappointmentsystemk.pojo.bo.UserSelectBO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

public interface UserService extends AccountConsts, JwtConsts {
    @Transactional
    void reg(UserRegParam userRegParam);

    UserBO login(UserLoginParam userLoginParam,String remoteAddr,String userAgent);

    void changePassword(UserChangePasswordParam userChangePasswordParam);

    void changePassword(UserForgetPasswordParam userForgetPasswordParam);

    UserSelectByIdBO selectUserById(Long id);

    void changeUser(UpdateUserParam updateUserParam);

    List<UserSelectBO> select();

    UserSelectBO selectById(Long id);

    void logout(CurrentPrincipal currentPrincipal);
}
